// 自动登录服务
import { encrypt, decrypt } from './cryptoService';

// 存储密钥
const AUTO_LOGIN_KEY = 'autoLogin';
const CREDENTIALS_KEY = 'encryptedCredentials';

/**
 * 保存用户凭据（用户名和加密后的密码）
 * @param {Object} credentials - 包含用户名和密码的对象
 * @param {boolean} autoLogin - 是否启用自动登录
 * @returns {boolean} - 保存是否成功
 */
export const saveCredentials = (credentials, autoLogin = false) => {
  try {
    if (!credentials || !credentials.username || !credentials.password) {
      return false;
    }

    // 加密凭据
    const encryptedData = encrypt(credentials);
    
    // 保存加密后的凭据
    localStorage.setItem(CREDENTIALS_KEY, encryptedData);
    
    // 保存自动登录设置
    localStorage.setItem(AUTO_LOGIN_KEY, autoLogin.toString());
    
    return true;
  } catch (error) {
    console.error('保存用户凭据失败:', error);
    return false;
  }
};

/**
 * 获取保存的用户凭据
 * @returns {Object|null} - 返回用户凭据对象或null
 */
export const getCredentials = () => {
  try {
    // 获取加密的凭据
    const encryptedData = localStorage.getItem(CREDENTIALS_KEY);
    
    if (!encryptedData) {
      return null;
    }
    
    // 解密凭据
    const decryptedData = decrypt(encryptedData);
    
    // 尝试解析JSON
    try {
      return JSON.parse(decryptedData);
    } catch {
      return null;
    }
  } catch (error) {
    console.error('获取用户凭据失败:', error);
    return null;
  }
};

/**
 * 检查是否启用了自动登录
 * @returns {boolean} - 是否启用自动登录
 */
export const isAutoLoginEnabled = () => {
  return localStorage.getItem(AUTO_LOGIN_KEY) === 'true';
};

/**
 * 清除保存的凭据和自动登录设置
 * @returns {boolean} - 清除是否成功
 */
export const clearCredentials = () => {
  try {
    localStorage.removeItem(CREDENTIALS_KEY);
    localStorage.removeItem(AUTO_LOGIN_KEY);
    return true;
  } catch (error) {
    console.error('清除用户凭据失败:', error);
    return false;
  }
};

/**
 * 禁用自动登录但保留凭据
 * @returns {boolean} - 操作是否成功
 */
export const disableAutoLogin = () => {
  try {
    localStorage.setItem(AUTO_LOGIN_KEY, 'false');
    return true;
  } catch (error) {
    console.error('禁用自动登录失败:', error);
    return false;
  }
};